package almacenes.modelo.service.impl;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import almacenes.modelo.dao.UsuarioDao;
import almacenes.modelo.dao.impl.UsuarioDaoImpl;
import almacenes.modelo.entidad.RolesUsuarioRel;
import almacenes.modelo.entidad.UsuarioMae;
import almacenes.modelo.excepcion.ExcepcionGeneral;
import almacenes.modelo.service.UsuarioService;

public class UsuarioServiceImpl implements UsuarioService{

	private Log logger = LogFactory.getLog(this.getClass());
	private UsuarioDao usuarioDao = new UsuarioDaoImpl();
	
	@Override
	public List<UsuarioMae> getListaUsuarios() throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.getListaUsuarios();
		} catch (Exception ex) {
			String sMensaje = "No se puedo obtener los tipos de proveedores";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
		
	}

	@Override
	public List<UsuarioMae> buscarUsuarios(UsuarioMae objUsuario,int iIdEstadoUser,int iIdRolUser,int idDepartamentoUser) throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.buscarUsuarios(objUsuario, iIdEstadoUser, iIdRolUser, idDepartamentoUser);
		} catch (Exception ex) {
			String sMensaje = "No se puedo obtener los tipos de proveedores";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public String obtenerUsuarioBBVA(String sCodigoBBVA) throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.obtenerUsuarioBBVA(sCodigoBBVA);
		} catch (Exception ex) {
			String sMensaje = "Error obtenerGeneradorM";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
		
	}

	@Override
	public List<UsuarioMae> getUsuariosGM(Integer iIdDept)
			throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.getUsuariosGM(iIdDept);
		} catch (Exception ex) {
			String sMensaje = "Error getUsuariosGM";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public String insertUserBBVA(UsuarioMae objUser, Integer iIdRolUser,
			Integer idDepartamentoUser, Integer iIdUserMayor)
			throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.insertUserBBVA(objUser, iIdRolUser, idDepartamentoUser, iIdUserMayor);
		} catch (Exception ex) {
			String sMensaje = "Error insertUserBBVA";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
		
	}

	@Override
	public UsuarioMae getUsuarioBBVA(UsuarioMae objUser) throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.getUsuarioBBVA(objUser);
		} catch (Exception ex) {
			String sMensaje = "Error insertUserBBVA";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public List<RolesUsuarioRel> getListaRolesUser(Integer iIdUsuario)
			throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.getListaRolesUser(iIdUsuario);
		} catch (Exception ex) {
			String sMensaje = "Error insertUserBBVA";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public String insertaRolUserBBVA(Integer iIdUsuario, Integer iIdRol, Integer iIdDept,
			Integer iIdUsuMayor) throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.insertarRolUser(iIdUsuario, iIdRol, iIdDept, iIdUsuMayor);
		} catch (Exception ex) {
			String sMensaje = "Error insertaRolUserBBVA";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public String eliminarUserBBVA(UsuarioMae objUser) throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.elimimarUserBBVA(objUser);
		} catch (Exception ex) {
			String sMensaje = "Error insertaRolUserBBVA";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public String updateUserBBVA(UsuarioMae objUser) throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.updateUserBBVA(objUser);
		} catch (Exception ex) {
			String sMensaje = "Error updateUserBBVA";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public List<UsuarioMae> getHijosxGenMayor(Integer iIdUser)
			throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.obtenerHijosxGM(iIdUser);
		} catch (Exception ex) {
			String sMensaje = "Error updateUserBBVA";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

	@Override
	public String removeRolUser(RolesUsuarioRel ojbRolUser) throws ExcepcionGeneral {
		
		try {
			return this.usuarioDao.removeRolUser(ojbRolUser);
		} catch (Exception ex) {
			String sMensaje = "Error updateUserBBVA";
			this.logger.error(sMensaje, ex);
			throw new ExcepcionGeneral(sMensaje, ex);
		}
	}

}
